A data network is generally consisted of a network of nodes connected by point-to-point links. Each physical link may support a number of logical point-to-point channels. Each channel may be a bi-directional communication path for allowing commands and message data to flow between two connected nodes within the data network. Each channel may refer to a single point-to-point connection where message data may be transferred between two endpoints or systems. Data may be transmitted in packets including groups called cells from source to destination often through intermediate nodes.
In many data networks, hardware and software may often be used to support asynchronous data transfers between two memory regions, often on different systems. Each system may correspond to a multi-processor system including one or more processors. Each system may serve as a source (initiator) system which initiates a message data transfer (message send operation) or a target system of a message passing operation (message receive operation). Examples of such a multi-processor system may include host servers providing a variety of applications or services, and I/O units providing storage oriented and network oriented I/O services.
Next Generation I/O (NGIO) architecture, virtual interface (VI) architecture and Infiniband architecture provide an I/O communication mechanism among different computer systems. Communication allows movement of data between two memory regions, typically on different systems. Because hardware limitations exist with NGIO, VI and Infiniband architectures, a remote direct memory access (RDMA) operation may create a request larger than that supported by the underlying hardware and software. More specifically, the RDMA request can transfer data from multiple local memory buffers into a single remote memory region; however, the network hardware or software may impose limitations on the size of a single data transfer. This may slow down the data transfer or result in an incorrect data transfer. For example, many NGIO architectures can only support a 4 gigabyte data transfer due to hardware limitations. However, it may be desirable to transfer more than 4 gigabytes of data efficiently.